
----------------------------------------
MRAPassword program by Eggie ( eggiex1 (at) yahoo.com )
----------------------------------------

--------------------
Table Of Contents
--------------------

 1 - About
 2 - Warnings
 3 - Password Incrementation - FYI
 4 - Functionality
 5 - Parameters
 6 - Parameters - Monster Criteria
 7 - Misc
 8 - Monster Data
 9 - Performance
10 - Colors
11 - Program Character Map
12 - Tables And Lists
13 - Q & A
14 - Credits

--------------------
1 - About
--------------------

This program implements the password algorithms used in Monster
Rancher Advance and Monster Rancher Advance 2 for the Game Boy
Advance, so that the user can try out passwords and see what
monsters they provide, search for particular passwords, etc.

--------------------
2 - WARNINGS
--------------------

Please read these 2 warnings that will save you a lot of hair pulled
off your head.

----------
CPU Hugging
----------

If options are selected in such a way so that the program has to
search through hundreds of millions or more passwords before
terminating a process, then the program is going to be very busy
doing such work, and will likely take a good 95 - 99% of CPU time.

The program will very likely never freeze, and it will eventually
finish, but while doing its work, its going to really put those CPU
resources to work.

That said, if you are planning to let the program do a billion+
password search, make sure you are willing to wait it out. This is
exactly why I programmed a search limit into the program options.
Searches that take too long ( like searching for a CinderBird with
the best stats and the trait of Failure starting from a null
password for MRA 2 ) can take a really long time to find, so make
sure you are careful with the search limit.

The 1 For Each Monster and 1 For Each Monster x Trait options allow
the user to resume a search ( provided they fill out the starting
password field, which can be anything they would like but should
best be the last password tried in the previous search, posted in
the last output file ) so there is no need to set the search limit
too high.

If you insist on completing such arduous tasks in a single run, make
sure you have the patience for it first. When the CPU is being used
at almost 100% capacity, even merely terminating the program becomes
difficult. When the program is busy completing a task, it will
display it in the dialog title bar.

----------
Output File Size
----------

The Solve Range option will search a range of passwords starting
from the initial password and finishing after trying as many
passwords as specified by the search limit field.

Suppose an user left the "any" check boxes in all the monster
criteria and left the search limit at 1,000,000. ( i.e. the default,
initial settings. ) If the Solve Range option is used under these
circumstances, then the 1,000,000 passwords the program will try
will all be accepted, and will all be written to file.

In MRA 1, each monster written will be 146 bytes + newline, and for
MRA 2, each will be 143 + newline. So 1,000,000 passwords * 143
bytes for each =~ 143 Megabytes of output written to a text file.
Writing 143 Megs of anything to an output file takes resources,
time, and of course, disk space, for something that will you will
probably not want to try and open anyways. So be sure to check the
search limit and monster criteria carefully before selecting such an
option.

--------------------
3 - Password Incrementation - FYI
--------------------

For the purposes of this program, password incrementation simply
refers to the process of increasing a password by 1. This is done in
the same fashion as it would be done with numbers. The last
character in the password is changed to the next character in the
character order list.

As I was typing this out, it became clear to me that any more of a
technical explanation would be all the more confusing, so here is an
example. The following passwords are the result of incrementing each
previous password by 1 except for "..." which denotes "a few
passwords later"

A
B
C
D
...
/
=
&
AA
AB
AC
...
A/
A=
A&
BA
...

The order of the characters used by this program is as follows:

Monster Rancher Advance 1:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ( )
a b c d e f g h i j k l m n o p q r s t u v w x y z ! ? # %
0 1 2 3 4 5 6 7 8 9 ' " : ~ _ . , @ ; $ + - * / = &

Monster Rancher Advance 2:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ( )
a b c d e f g h i j k l m n o p q r s t u v w x y z ! ? # %
0 1 2 3 4 5 6 7 8 9 ' " : ~ _ ^ , @ ; $ + - * / = &

The difference between MRA 1 and MRA 2 character maps is that MRA 1
uses a decimal point in the place where MRA 2 uses a space. However,
MRA 2 already has a space, denoted in this program by the '&'
character. Furthermore, this second space has a different byte value
in the game, and additionally is interpreted by the game as an enter
key. ( i.e. as though the character before it was the last one,
thereby truncating the password. ) As a result, the game ignores
that character altogether, and any other character typed in beyond
it. Therefore, password incrementation skips over that character in
MRA 2. However, the user can still use the character manually,
although it is not recommended, as any monster such passwords
yield will not be provided by the game.

By default, any character detected in either the dictionary used or
typed into the password field, that is not in the character map for
the specified game, will be converted to the space, denoted by the
'&' character.

For more information on the password characters, see the character
map sections.

--------------------
4 - Functionality
--------------------

----------
Option 1. Display Monster
----------

Type in a password in the password box and see what monster that
password provides.

----------
Option 2. Find Password / Resume
Option 4. Solve Range
Option 5. 1 For Each Monster
Option 6. 1 For Each Monster x Trait
----------

For options 2, 4, and 5, the program will read the password
currently typed into the password field. It will also read the
number in the search limit field. The program will then try all
passwords from the ( initial password + 1 ) until it has tried as
many passwords as specified by the search limit. The password is
incremented by 1 each time. If the password currently being tried
matches the criteria specified by the user, ( i.e. the parameters )
then the password is accepted.

In option 2, the process will stop either when an accepted password
is found, or when the limit is reached. If the limit is reached and
no password has been found to match the criteria, the last tried
password will be displayed in the password field, and the monster
data will be cleared. Otherwise, the password accepted is displayed
in the password field and the monster data is displayed. If the
"any" check for all monster criteria have been selected, then the
next acceptable password will always obviously simply be the next
password. This can be done so that the user can step through each
and every password, one by one, and see the monster each such
passwords provide.

In option 4, the process will only stop once the limit is reached.
If a password is accepted, it will be written to the output file,
along with the monster data, and the process will continue. The last
password tried in the range will be displayed in the password field.

In option 5, the process will only stop once the limit is reached,
or when a password for each monster is found. If a password is
accepted and it provides a monster for which no password has been
found, the password is added to a list of accepted passwords. Once
the limit is reached, or 1 password for each monster is found, all
passwords and the monsters they provide are written to the output
file in the monster order.

In option 6, the process is identical to option 5, except that the
requirement will be that 1 password is found for each monster-trait
combination.

In options 5 and 6, the program will ask for a resume file. This is
simply a previous output file of the same operation. This is done so
that, if the search is something that would normally take a long
time ( such as finding 1 password for each monster-trait combination
and the best stats starting from a null password for MRA 2, a task
that takes over 12 billion passwords to search ) then the user can
do such a process little by little. The resume file can be any
output file from any of the other processes. So for example, the
user can use an output file from Solve Dictionary as a resume file
for the process of 1 For Each Monster, set the search limit of 0,
and receive an output file with 1 For Each Monster with the
dictionary file words as the passwords in a monster number order.
The resume file can also be the same as the output file, because the
resume file will be opened, loaded, and closed before the output
file is even opened. The last password tried in the range will be
displayed in the password field.

----------
Option 3. Solve Dictionary
----------

Select an input file with words ( 1 "word" per line ) and select an
output file. The output file will show every monster that is derived
from every such word and which also matches the specified criteria
selected. It should be noted that only strings between 1 and 8
characters are used, because that is the limit imposed by the game
for password length. Therefore, all other such words are skipped.

--------------------
5 - Parameters
--------------------

----------
Game Select
----------

Select the game for which to find passwords, etc. When the selected
game is changed, the list boxes are updated with the currently
selected game's information.

----------
Data Select
----------

User can choose whether to be able to search for specific monsters
or if they would rather select the main and sub types of the
monster.

--------------------
6 - Parameters - Monster Criteria
--------------------

These parameters affect the monsters that are accepted by the
program's execution for options 2, 3, 4, 5 and 6. They define the
monster criteria explained in the Functionality.

----------
Monster
----------

If "Select Monster" was chosen in Data Select, the user can specify
which monsters to are acceptable. Select "any" if any monster is
acceptable, or specify the monsters acceptable by putting a check in
them in the list box.

----------
Main + Sub
----------

If "Select Main + Sub" was chosen in Data Select, the user can
specify the main and sub types that are acceptable. For example,
selecting Pixie for main and any for sub will make all Pixie types
acceptable.

----------
Stats
----------

Specify the stats arrays that are acceptable. All passwords with 2
characters or more use a stats array. If a password has only 1
character, then the "any" checkbox must be checked for the algorithm
to accept the "none" stats array.

----------
Trait
----------

Specify the traits that are acceptable. All passwords with 3
characters or more yield some trait, although a lot of them yield no
trait as the trait. For the purposes of determining user selections,
passwords with less than 3 characters yield "none" as the bonus
trait.

--------------------
7 - Misc
--------------------

----------
Show Impossibles
----------

This option is available for Monster Rancher Advance 2 only because
it is the only game where there are "Impossibles".

An Impossible is a monster that can be acquired via the password
algorithm, but that is forcibly reverted to a pure breed by the
game. If the user wishes for the program to simulate this forced
conversion, this option should be turned off. However, if the user
wishes to find / see passwords that provide such monsters even
though the game will revert them to their pure breed types, this
option should be selected.

----------
Skip Hard-Coded Passwords
----------

Hard-Coded passwords are those that have been specifically coded to
provide certain monsters. Any hard-coded password will yield a
monster other than that provided by the algorithm. If the user
wishes to avoid these in the searches, this option should be
enabled.

It should be noted that any password that also contains a hard-coded
password, for the purposes of determining the monster provided, is
also itself a hard-coded password. This makes the real list of
passwords to avoid much larger, although the program's
implementation does not need such complete list. It is enough to
determine if a password simply contains a hard-coded password.

Making such determination can be time consuming, nonetheless,
because there is no known algorithm or data structure with less than
O(N) time that can determine if a password does not contain any
hard-coded password as a sub-string. Therefore, this check is always
done last by the program to minimize runtime. This search has been
efficiently implemented, however, by sorting the hard-coded
passwords list in order of string length, and avoiding any
hard-coded password that is longer than the current password.

In the event that the output file contains hundreds of thousands or
even millions of passwords, this check will have to be done many
times and will therefore slow down the program, so don't be
surprised if such case took place. For the 1 For Each Monster
and 1 For Each Monster x Trait options, however, this check
will be done relatively few times, because as soon as a password
for a particular monster or monster-trait has been found, only
passwords for new, not yet found monsters have to go through
this final checking step, and therefore for those 2 options,
the running time should not deteriorate much. For the Display
Monster option, this check is not done at all for obvious reasons,
and for the Find Password / Resume option, the slow-down due to this
check is negligible.

----------
Search Limit
----------

As stated before, this determines how many passwords to try before
quitting the procedure. The default is 1,000,000. This value is used
for all options except Solve Dictionary, because it is assumed the
dictionary file will not contain such a vast amount of words that
the program could not evaluate all such passwords in a reasonable
time.

--------------------
8 - Monster Data
--------------------

Monster Data is used for Options 1 and 2 only, because all other
options use output files for their work.

----------
Monster
----------

The exact monster provided by the password.

----------
Main
----------

The exact main type of the monster.

----------
Sub
----------

The sub type provided by the algorithm. It is not always the same as
the monster's actual sub type because failed main + sub combinations
always yield pure breeds. Displaying the sub type of the algorithm
is more informative to the user.

----------
Stats Array
----------

If the password is 2 characters or more in length, a stats array is
used to determine the stats variations.

----------
POW INT ACC STD DEF LIF
----------

The exact visible stats of the monster.

----------
1 2 3 4 5 6 7
----------

The 7 unknown stats from the stats array. Because they are unknown,
I do not know what they are for and therefore simply display their
values from the stats array.

----------
Bonus Trait
----------

The bonus trait provided by the algorithm. Since not all
monster-trait combinations are legal in the actual game, the bonus
trait provided may not always be present in the actual monster.

--------------------
9 - Performance
--------------------

Displays the running time of the last process, along with the number
of passwords tried and accepted by that process, and their rates
based on the running time.

--------------------
10 - Colors
--------------------

The Colors Menu allows the colors of the dialog to change. So if the
normal Windows grey colors are preferred, select "Reset Colors".
Otherwise, the colors can be changed to anything else as well.
Settings are not saved for next time, however.

--------------------
11 - Program Character Map
--------------------

From the options menu, there is a Char Map menu item that brings up
a modeless character map for the game. The character map is simply
a print-screen of the selected game's password regeneration screen.
From there, the user can move the mouse over the different
characters and click on them to send that character to the password
field in the main dialog. The functionality is the same as in the
game in that the back arrow will delete the last character entered
and END will generate the monster provided by the current password.

--------------------
12 - Tables And Lists
--------------------

----------
MONSTER RANCHER ADVANCE 1 - Character Map
----------

   -------------------------------------------------
   |               |               |               |
   |   A B C D E   |   a b c d e   |   0 1 2 3 4   |
   |               |               |               |
   |   F G H I J   |   f g h i j   |   5 6 7 8 9   |
   |               |               |               |
   |   K L M N O   |   k l m n o   |   ' " : ~ _   |
   |               |               |               |
   |   P Q R S T   |   p q r s t   |   . , @ ; $   |
   |               |               |               |
   |   U V W X Y   |   u v w x y   |   + - * / =   |
   |               |               |               |
   |   Z [ ] ( )   |   z ! ? # %   |   & & & & &   |
   |               |               |               |
   -------------------------------------------------

----------
MONSTER RANCHER ADVANCE 1 - Replacements
----------

# = The musical note
@ = Degree
; = The other comma
$ = The mid-air dot
& = Space

----------
MONSTER RANCHER ADVANCE 1 - Hard-Coded Passwords
----------

98%SPEED
FROMFREE
SEAINSUN
RICECAKE
SQUIRREL
ASSASSIN
Delusion
Missouri
Cardinal
Bulldoze
Boyscout
12345678
87654321
Seahorse
Suezoman
Illinois
Thursday
Luminous
EyeCandy
Surviver
Saturday
RolyPoly
New York
Fireball
Whatever
Teenager
Improper
Veronica
February
Maryanne
Diabolic
Pussycat
Nauseous
Sabotage
Calculus
Tazmania
Ravenous
Magazine
Michigan
Screwoff
Shooting
Rosebush
Kangaroo
Playmate
Thanatos
Pinecone
Hardcore
Lowrider
Beefcake
December
Run Amok
Jurassic
Torrance
Nebraska
Distance
Hayabusa
Skeletal
Beastman
Titanium
Renegade
Babyface
Arkansas
Highwire
Headache
Doughnut
Mystical
Virginia
Illision
Lei Fang
Project0
Chainsaw
Chromium
Chromium
November
Starfish
Honeybee
Parakeet
Tootsies
Backpack
Bigmoney
LasVegas
Mustache
Jiujitsu
Infinite
Poritoka
Predator
MEGADETH
Football
Britney
Lesione
Durahan
Octopee
35STORM
WARWAR9
LIKETEA
ONLIGHT
KEEPSLY
icecake
LOBSTER
quirrel
ssassin
ADVANCE
Jackson
Crackle
Breeder
America
Warlord
Amazing
Eyeball
Hot Rod
Extreme
Arizona
Dodgers
Michael
Nirvana
October
Galleon
Marbles
Perfect
Georgia
Trollop
Monster
Olympic
Machete
Trigger
England
Spicoli
Seizure
Success
Lucifer
Muskrat
Vertigo
Needles
Earmuff
Gunning
Liberty
Feather
Vitamin
Newport
Sweater
Crimson
Awesome
Dan Hsu
Tee Pee
Teacher
Karaoke
Unicorn
Keywest
Richard
Bouncer
Pebbles
Blitzen
Squirmy
Hangman
Caution
Messiah
Destroy
Baloons
Harvest
Florida
Itagaki
Yankees
Warrior
Othemem
8675309
Playboy
Dragoon
Pegasus
Blondie
Trapeze
Rancher
Tiffany
Allucan
Anthony
Berserk
Kingdom
January
Pincher
Strange
Sausage
Crystal
Justice
Paladin
Avenger
WAKE UP
MATRIX
Mocchi
Dragon
Ducken
Antlan
obster
Kawrea
Torble
KITTEN
SHRIMP
LIZARD
KNIGHT
SHADOW
POISON
MOTOGP
RABBIT
August
Beaver
Reeper
Scurvy
Sleepy
Oyster
Monday
Bayman
Xanadu
Alaska
Skater
Weiner
Monkey
Friday
Kasumi
Bikini
Orchid
Turtle
Fleria
Sticky
Recess
Sister
Sunday
Jordan
Vector
Helena
Fluffy
Fierce
Danger
Doctor
Vortex
Nelson
Purple
Mystic
Soccer
Hawaii
Wizard
Yellow
Potter
Mojave
Unison
Garnet
Johnny
Gallop
Rapper
Deejay
Wonder
Saliva
Africa
Oregon
Rudolf
Lakers
Wheeze
Utopia
Europe
Orange
Heaven
Galaxy
Bamboo
Mookie
Muffin
Hammer
Saturn
Redrum
Tattoo
George
Ginger
Stumpy
Horror
Corona
Hockey
Hayate
Winner
Zephyr
Ducker
Nature
Luxury
Killer
Citrus
Jungle
CHIEF
TECMO
Arrow
Pixie
Golem
Suezo
Tiger
Joker
oller
Papas
Tesca
WOMAN
GIANT
itten
ragon
hrimp
izard
HOUND
BEAST
SNAKE
VIPER
DRILL
RHINO
HIPPO
SWORD
BLADE
ARMOR
night
DEMON
DEATH
hadow
oison
GREEN
BROWN
STONE
ARGUS
Argus
abbit
Metal
METAL
Alive
April
Danny
Spike
Zebra
Tecmo
Daddy
Racer
Scott
Turbo
Skunk
Power
Sinfu
Money
Reina
Oprah
Priss
Sugar
Mummy
Ninja
Fiend
Aries
Japan
Jesus
Pansy
Norma
North
Largo
Apple
Candy
Venus
Truck
Mucus
Molly
Sucks
Smith
Manga
Earth
Black
Death
Angel
Angry
Texas
Blood
House
Claws
Harry
Ocean
Boxer
Brawl
Wussy
Sammy
Plant
Rygar
Porno
Chris
Colby
Pizza
Prick
Chyna
Isamu
Tengu
White
Santa
Happy
South
Cutie
Faith
Creed
Bagel
Lunch
March
Mario
Brian
Roach
Slimy
Alien
Ultra
Polar
Rouge
Cyber
IDOL
Zuum
Naga
Mogi
Momo
Most
iant
GIRL
LADY
oman
SEXY
RESS
ress
CRAB
LOOK
BIRD
DINO
saur
WOLF
ound
east
nake
iper
MOLE
rill
hino
ippo
word
lade
rmor
emon
eath
HERO
BLUE
reen
rown
GLAY
ROCK
tone
COOL
Pink
PINK
Dark
Holy
Grim
Igor
Lazy
Weed
Coal
John
Pack
Zack
Judo
West
Yoyo
Rose
Tina
Zena
Mimi
Neko
Road
Show
Ruby
Shaq
Butt
Fear
June
Love
Toad
Frog
Lisa
Rush
Live
Lake
Irie
Easy
Made
Duke
Ripe
Maze
Clam
Shoe
Mars
Mace
Hell
Joel
Jerk
Fish
Kobe
Kiss
Tree
Mike
Utah
July
Luke
Ring
Colt
Ryan
Paul
Baby
Bear
Foxy
Heat
Bong
Back
Cock
Dead
Dick
East
Fade
Lame
Life
Wife
Film
Farm
Disc
Pabs
Pale
Leaf
Snow
RED
BIG
Mew
Zan
DOA
irl
ady
exy
air
AIR
CAT
cat
Cat
rab
EYE
ook
SEE
TOY
ird
ino
DOG
Dog
dog
olf
OCT
cto
ole
VIL
vil
nut
Nut
NUT
FIN
fin
Fin
Sea
SEA
sea
ero
ANT
red
Red
lue
ock
big
Big
ool
RAP
rap
Rap
ark
!?
ye
ee
oy
nt
DJ

----------
MONSTER RANCHER ADVANCE 2 - Character Map
----------

   -------------------------------------------------
   |               |               |               |
   |   A B C D E   |   a b c d e   |   0 1 2 3 4   |
   |               |               |               |
   |   F G H I J   |   f g h i j   |   5 6 7 8 9   |
   |               |               |               |
   |   K L M N O   |   k l m n o   |   ' " : ~ _   |
   |               |               |               |
   |   P Q R S T   |   p q r s t   |   ^ , @ ; $   |
   |               |               |               |
   |   U V W X Y   |   u v w x y   |   + - * / =   |
   |               |               |               |
   |   Z [ ] ( )   |   z ! ? # %   |   & & & & &   |
   |               |               |               |
   -------------------------------------------------

----------
MONSTER RANCHER ADVANCE 2 - Replacements
----------

# = The musical note
^ = Space 2 ( Should not be used. )
@ = Degree
; = The other comma
$ = The mid-air dot
& = Space

----------
MONSTER RANCHER ADVANCE 2 - Hard-Coded Passwords
----------

SUN_BURN
Valhalla
Kunoichi
Enochian
waterELM
Calcutta
LastARMS
Drunkard
NineLive
RAB?CAT?
Sylvania
SCOTLAND
AIRplane
SWEETEST
CHILDREN
Nintendo
WHTtooth
LED_gold
Flying_D
SciSSorS
SCP_Tale
STRlight
EiffelTw
Sun_Bath
Eggplant
ThamoGRF
HoundDog
Wenderer
rdWFburn
HIGHLAND
Frunting
REDandWT
Desperad
DANCEMAN
REBOUNDS
MURAMASA
13_GHOST
JudgeMan
B_HAZARD
PEACHpit
RedBlood
SKULLMAN
Paracels
ULTIMATE
Sneaking
1W0O0O0D
ATatTAck
MIL24BIL
G_Shadow
RaIN_Bow
JAILROCK
Portugal
Ha813Ppy
GNIKNOIL
W_Angel
tHuNdEr
DEFFEND
Neptune
NICEGUY
GR_Devi
RG_Veda
Crystal
DRG_RGN
LST_DRG
SCP_WMN
HE_ROCK
Lunatic
Phantom
LADY1ST
CTHULHU
MAC_OCT
MIXTURE
BoostON
MAX_SPD
7colors
Brigade
KILL'em
KUNG_Fu
FROGGER
Vampire
MECCOLD
STARMAN
therapy
Evening
Failing
HeAt_UP
BLflaMe
Shining
MAD_DOC
BRONZE
MudMan
AlBiOn
CHErry
drache
HOppER
LIZard
SPORTS
Mozart
Makeup
Hidden
HELMET
X'mas!
Prayer
GALAXY
comics
SKETCH
ChOcCo
EMPIRE
ARENA
ALIEN
TECMO
S-D-L
B-L-T
Lava
Farn
GARU
MRA2
MRA
MR

----------
MONSTER RANCHER ADVANCE 2 - Impossibles
----------

Monster              Main             Sub

015 - Carmilla       00 - Pixie       30 - SP 30
103 - Ragnaroks      04 - Dragon      35 - SP 35
104 - FeaterGold     04 - Dragon      36 - SP 36
164 - Torridon       07 - Ducken      31 - SP 31
202 - Ifrit          09 - Tiger       36 - SP 36
240 - OctaChrome     11 - Octopee     32 - SP 32
358 - Oboro          18 - Zan         32 - SP 32
430 - Franken        22 - Henger      32 - SP 32
445 - Grasseed       23 - Raiden      30 - SP 30
446 - JeetKuneDo     23 - Raiden      31 - SP 31
464 - Campanella     24 - Gitan       30 - SP 30
465 - Pickle         24 - Gitan       31 - SP 31
473 - Rainbow        26 - Doodle      31 - SP 31
493 - Blaze          28 - Phoenix     30 - SP 30
509 - Lionel         29 - Garu        30 - SP 30
510 - Liorosa        29 - Garu        31 - SP 31

--------------------
13 - Q & A
--------------------

Q - Why are all the list boxes disabled? I can't check any of the
    boxes!

A - The "any" check box is checked. Uncheck it to allow changes to
    the check list box. Selecting "any" obviously makes the need for
    the check list box unnecessary, so it is disabled while "any" is
    chosen.

Q - I don't understand what some of the characters in the password
    are supposed to be.

A - Because the game uses some non-ASCII characters, I had to select
    ASCII substitutes. Check the character map.

Q - Why does a password like "AB" for MRA 2 say it is a Tiger and
    has a Tiger as the main type but it shows Garu as the sub type?

A - Garu is simply the sub type that was calculated for the monster.
    The password "AB" in MRA 2 gives a Tiger for the main type and a
    Garu for the sub type. However, because Tiger + Garu does not
    exist in the game, a plain Tiger is awarded instead. I chose to
    leave the sub type being displayed as the sub type from the
    algorithm instead of the pure breed's sub type because it is
    more informative to the user. If a password yields a Tiger as
    both main and sub type, it will be displayed as such.

Q - What are the unknown stats?

A - I don't have any information on them other than the fact that
    they are part of the stats array. Since I don't know what they
    are for and are obviously hidden from the player, I can only
    display their values. At least it shows more information on them
    than the game itself is willing to share.

Q - Why does it show "NONE" as the trait even though the password
    gave me a monster with some traits?

A - The trait displayed by the program is the Bonus Trait. Emphasis
    must be placed on the word "Bonus". This is the trait that the
    algorithm calculates. Most monsters have "base" traits, just
    like they have base stats. However, displaying all traits by the
    program would require that I have a complete list of all
    440 + 512 monsters and their base traits. I figure displaying
    the bonus trait awarded is enough.

Q - The program says I got a trait that the game isn't giving me!

A - Some monsters are not allowed to have certain traits. ( At least
    not via a password ) In order to display the bonus trait AND
    take into consideration whether or not the monster can have that
    trait, I would have to compile a complete table of all allowed
    440 * 44 + 512 * 23 = 31,136 monster + trait combinations. Of
    course, I'm sure it is not that extensive. For example, there is
    a good chance it is based on main type and only a few
    exceptions. Nonetheless, it is more work than I'd like to do. If
    the program shows a certain trait and the password does not
    provide it for that monster, then it simply means that monster
    is not allowed to have that trait. ( again, at least not via a
    password )

Q - Why are there monsters not listed at all for MRA 1?

A - Although MRA 1 does not contain any Impossibles, ( per my own
    definition ) SP monsters are not available via non hard-coded
    passwords. The reason for this is that the sub types of SP 20
    and SP 21 are missing from the sub type array completely. As a
    result, no password can ever generate a sub type of SP 20 nor
    SP 21, and therefore SP monsters in MRA 1 are inaccessible via
    the password algorithm. Therefore, I removed those SP monsters
    and the SP sub types from the lists to make it clear that no
    password will ever provide those monsters anyways. This is not
    the same as the Impossibles from MRA 2, however, because in
    MRA 2 all main and sub combinations can be generated. The
    problem in that game is that a post-password algorithm process
    reverts any Impossibles found to their pure breed types. This
    leads to the problem commonly known as the "Unlockable
    OctaChrome" - the very reason I even worked on this program at
    all.

--------------------
14 - Credits
--------------------

Special Thanks to Labmaster for sending me the SDL version of VBA he
had which helped in finding the Assembly code where various
operations were made. Also, thanks for the suggestion on how to go
about on finding the Assembly code responsible.

Special Thanks to Kenobi who, according to Labmaster, was the one
who added bpr to the SDL version (break on read) which allowed such
finding of the Assembly code.

Special Thanks to Parasyte for his Password Generators Tutorial,
which served as an example on how to find such code. His tutorial
was for a different system altogether, but nonetheless, it was a
great beginner's guide, seeing as how this is the first time I ever
read and interpret disassembled code.

Finally, Special Thanks to the good people at
http://monster-rancher-metropolis.com/ for their great site.
